﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Model;
using DAO;

namespace RegraNegocio
{
    public class ClienteBO
    {
        private static ClienteBO clienteBO = null;
        private bool DAO;

        public static ClienteBO getInstance()
        {
            if (clienteBO == null)
            {
                clienteBO = new ClienteBO();
            }
            return clienteBO;
        }


        public Cliente consulta(Cliente cliente)
        {

            cliente = ClienteDAO.getInstance().consultar(cliente);
            return cliente;

        }

        public bool alterar(Cliente cliente)
        {
            if (validador(cliente))
            {
                DAO = ClienteDAO.getInstance().alterar(cliente);
                return DAO;
            }
            else
            {
                return false;
            }


        }

        public bool gravar(Cliente cliente)
        {
            if (validador(cliente))
            {
                DAO = ClienteDAO.getInstance().inserir(cliente);
                return DAO;
            }
            else
            {
                return false;
            }


        }

        public bool excluir(Cliente cliente)
        {

            DAO = ClienteDAO.getInstance().cancelar(cliente);
            return DAO;

        }

        bool validador(Cliente cliente)
        {
            int number;

            if (Int32.TryParse(cliente.Uf, out number))
            {
                throw new Exception("A UF não pode ser números!");
            }

            else if (!Int32.TryParse(cliente.CpfCnpj, out number))
            {
                throw new Exception("O CNPJ não pode conter letras!");

            }

            else if (!Int32.TryParse(cliente.Tel1, out number) ||
                  !Int32.TryParse(cliente.Tel2, out number) ||
                    !Int32.TryParse(cliente.Tel3, out number))
            {
                throw new Exception("Os TELEFONES não podem conter letras!");
            }
            else
            {
                return true;
            }
        }

        public List<Cliente> recuperarClientes(Cliente cliente)
        {
            List<Cliente> clientesRecuperados = null;

            clientesRecuperados = ClienteDAO.getInstance().recuperarClientes(cliente);

            return clientesRecuperados;
        }

        public List<Cliente> recuperarTodosClientes() 
        {
            return ClienteDAO.getInstance().recuperarTodosClientes();
        }
    }
}
